package org.NooLab.texx;

import java.util.ArrayList;
import java.util.Map;

import org.NooLab.texx.components.AlgorithmsProviderIntf;
import org.NooLab.texx.plugg.TransformationEnv;
import org.NooLab.texx.plugg.TransformationEnvIntf;
import org.NooLab.texx.properties.SettingsTransporter;
import org.NooLab.utilities.datatypes.SerialMap;

import com.jamesmurty.utils.XMLBuilder;




public interface TexxPluginSettingsIntf {


	public String getBaseFilePath() ;

	public void setBaseFilePath(String basePath) ;

	public void setBaseFilePath(String algorithmsConfigPath, String catalogxmlFileName);

	public String getCatalogFileName();
	
	public String getGlobalInternalJarPackagePath() ;

	public void setGlobalInternalJarPackagePath(String packagePath) ;
	
	public void addJarContentDeclaration( String className, String packagePath);
	
	public void addJarContentDeclaration(String jarfilename, String namedItem, String pkgname,String grouplabel, int active);
			
	public SerialMap getAlgoDeclarations();

	public ArrayList<String> getLoadedPluginClasses();
	// public Map<String, Class<?>> getPluginClassesMap();

	public void unRegisterPluginClass( String classname ) ;

	public void unRegisterPluginClass( Class<?> loadedClass) ;
	
	public boolean registerPluginClass( String classname, Class<?> loadedClass) ;

	public Map<String, Class<?>> getPluginClasses();

	public Class<?> getPluginClassByName(String classname);

	public boolean isAlgorithmPluggedin(String algoname);
	
	public XMLBuilder exportPropertiesAsXBuilder( SettingsTransporter  str);

	public TransformationEnvIntf getTransformationOriginator();
	
	public void addAlgorithmsProvider( AlgorithmsProviderIntf algoprovider );

	public AlgorithmsProviderIntf getAlgorithmsProvider(int index);

	public AlgorithmsProviderIntf getAlgorithmsProviderByType(int typeConstant);

}
